<% load_balancers.each do |load_balancer| -%>
  <%- load_balancer_attributes = load_balancer_attributes_of(load_balancer) -%>
resource "aws_elb" "<%= module_name_of(load_balancer) %>" {
    name                        = "<%= load_balancer.load_balancer_name %>"
  <%- if vpc_elb?(load_balancer) -%>
    subnets                     = <%= load_balancer.subnets.inspect %>
  <%- else -%>
    availability_zones          = <%= load_balancer.availability_zones.inspect %>
  <%- end -%>
    security_groups             = <%= load_balancer.security_groups.inspect %>
    instances                   = <%= load_balancer.instances.map { |instance| instance.instance_id }.inspect %>
    cross_zone_load_balancing   = <%= load_balancer_attributes.cross_zone_load_balancing.enabled %>
    idle_timeout                = <%= load_balancer_attributes.connection_settings.idle_timeout %>
    connection_draining         = <%= load_balancer_attributes.connection_draining.enabled %>
    connection_draining_timeout = <%= load_balancer_attributes.connection_draining.timeout %>
    internal                    = <%= internal?(load_balancer).to_s %>

<%- if load_balancer_attributes.access_log.enabled -%>
    access_logs {
        bucket        = "<%= load_balancer_attributes.access_log.s3_bucket_name %>"
        bucket_prefix = "<%= load_balancer_attributes.access_log.s3_bucket_prefix %>"
        interval      = <%= load_balancer_attributes.access_log.emit_interval %>
    }

<%- end -%>
<% load_balancer.listener_descriptions.map { |ld| ld.listener }.map do |listener| -%>
    listener {
        instance_port      = <%= listener.instance_port %>
        instance_protocol  = "<%= listener.instance_protocol.downcase %>"
        lb_port            = <%= listener.load_balancer_port %>
        lb_protocol        = "<%= listener.protocol.downcase %>"
        ssl_certificate_id = "<%= listener.ssl_certificate_id %>"
    }

<% end -%>
    health_check {
        healthy_threshold   = <%= load_balancer.health_check.healthy_threshold %>
        unhealthy_threshold = <%= load_balancer.health_check.unhealthy_threshold %>
        interval            = <%= load_balancer.health_check.interval %>
        target              = "<%= load_balancer.health_check.target %>"
        timeout             = <%= load_balancer.health_check.timeout %>
    }

    tags {
<% @client.describe_tags(load_balancer_names: [load_balancer.load_balancer_name]).tag_descriptions.first.tags.each do |tag| -%>
        "<%= tag.key %>" = "<%= tag.value %>"
<% end -%>
    }
}

<% end -%>
